本章课程PDF,视频(油管B站)。

选择不同的function set,会有不同的model,会在testing data上得到不同的error,越复杂的model不见得会给你越低的error。不同的error有两个来源:bias、variance。

Bias and Variance of Estimator

Variance

比较简单的model,variance比较小;比较复杂的model,variance比较大。

简单的model受sampled data的影响比较小。例如$f(x)=c$不管用什么数据训练,它的variance都是0。

Bias

Bias:If we average all the $f^*$,is it close to $\hat{f}$.

在图中,$f^*$是靶中蓝色的点,$\hat{f}$是红色靶心。

黑色曲线:实际function $\hat{f}$

红色曲线:5000$f^*$

蓝色曲线:5000$f^*$的平均值=$\bar{f}$

从图中可以看出,一个比较简单的model,会有比较大的bias;一个比较复杂的model,会有比较小的bias。

我们的model就是一个function set,可以用上图中蓝色圈圈表示。如果是一个简单的model,就如图中左边蓝色圈圈一样,因为是一个简单的model,它的空间就比较小,有可能空间就没包含target。如果是一个复杂的model,就如图中右边蓝色圈圈一样,空间比较大,可能包含了target,但因为给的training data不够,它没有办法找出target在哪,所以每次找出的$f^*$不一样,正好散布在target附近,平均起来就可以得到$\bar{f}$。

Bias v.s. Variance

比较简单的model的bias比较大variance比较小,比较复杂的model的bias比较小variance比较大。

如果这时error来源于variance很大,这时就是Overfitting,如果这时error来源于bias很大,这时就是Underfitting。

如果你的model没有办法fit你的training examples,说明此时bias大,如果你的model可以fit你的training data,但是在testing data上得到大的error,说明此时variance大。

What to do with large bias?

Redesign your model:

  • Add more features as input

  • A more complex model

What to do with large variance?

Model Selection

在Testing Set上Error最小的并不代表效果最好,因为并不代表在真正的Testing Set(real)上Error是小的。

真正可靠的做法是这样:

将Training Set分为Training Set和Validation Set,Training Set用于训练Model,Validation Set用来选Model。这时候在Testing Set(pulic)的Error能真正反映在Testing Set(private)上的Error。但不建议根据在Testing Set(public)上的Error发过来影响Model。

如果担心数据集划分不好,可以采取下边这种方法:

将Training Set分成三份,三份数据集轮流当成Validation Set,分成不同的三组,用modle分别在三个情景下算Error,得到Average Error,选Average Error最小的modle。

如果本博文对您有帮助,可以赞助支持一波博主~